// shake函数接收两个参数， handler：需要防抖处理的函数，time：防抖的时间间隔
const shake = (handler, time) => {
    // 声明变量存储定时器
    let timer
    // shake函数返回一个新的函数，这个函数会在指定的时间间隔后执行传入的handler函数
    return function () {
        // 每次调用shake函数时先清除之前的定时器
        clearTimeout(timer)
        // 重新设置新的定时器，在指定的时间间隔后执行传入的handler函数
        timer = setTimeout(() => {
            // 调用传入的函数，并将当前的this值和所有参数传递给这个函数
            // 确保在执行handler函数时，this的值和参数与调用shake函数时的值和参数一致
            handler.call(this, ...arguments)
        }, time)
    }
}

export default shake
